//package ar.edu.utn.frba.tacs.warnes.aop;
//
//import ar.edu.utn.frba.tacs.warnes.Auto;
//import ar.edu.utn.frba.tacs.warnes.Reserva;
//import ar.edu.utn.frba.tacs.warnes.Venta;
//import ar.edu.utn.frba.tacs.warnes.excepciones.DominioWarnesException;
//import ar.edu.utn.frba.tacs.warnes.pedido.Pedido;
//import ar.edu.utn.frba.tacs.warnes.pieza.Pieza;
//import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;
//import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;
//
//public aspect Logger {
//
//	pointcut loguearNuevaPieza(Pieza pieza) : execution(Pieza.new(..)) && this(pieza);
//	after(Pieza pieza) returning : loguearNuevaPieza(pieza) {
//		Utils.loguear("Se ha CREADO una nueva PIEZA llamada "
//				+ pieza.getDescripcion());
//	}
//
//	pointcut loguearNuevoAuto(Auto auto) : execution(Auto.new(..)) && this(auto);
//	after(Auto auto) returning : loguearNuevoAuto(auto) {
//		Utils.loguear("Se ha CREADO un nuevo AUTO con patente "
//				+ auto.getPatente());
//	}
//
//	pointcut loguearNuevaReserva(Reserva reserva) : execution(Reserva.new(..)) && this(reserva);
//	after(Reserva reserva) returning : loguearNuevaReserva(reserva) {
//		Utils.loguear("Se ha CREADO una nueva RESERVA de piezas con "
//				+ reserva.getPiezasReservadas().size() + " items");
//	}
//
//	pointcut loguearPiezaReservada(Pieza pieza) : execution(* Reserva.reservarPieza(..)) && args(pieza);
//	after(Pieza pieza) returning : loguearPiezaReservada(pieza) {
//		Utils.loguear("La PIEZA " + pieza.getDescripcion()
//				+ " fue reservada con exito");
//	}
//
//	pointcut loguearNuevaVenta(Venta venta) : execution(Venta.new(..)) && this(venta);
//	after(Venta venta) returning : loguearNuevaVenta(venta) {
//		Utils.loguear("Se ha CREADO una nueva VENTA de piezas con "
//				+ venta.getPiezasVendidas().size() + " items");
//	}
//
//	pointcut loguearPiezaVendida(Pieza pieza) : execution(void Venta.venderPieza(..)) && args(pieza);
//	after(Pieza pieza) returning : loguearPiezaVendida(pieza) {
//		Utils.loguear("La PIEZA " + pieza.getDescripcion()
//				+ " fue vendida con exito");
//	}
//
//	pointcut loguearException(DominioWarnesException exc) : execution(DominioWarnesException.new(..)) && this(exc);
//	after(DominioWarnesException exc) returning : loguearException(exc) {
//		if (ConstantesWarnes.LogLevel.DEBUG.equals(ContenedorWarnes
//				.getInstance().getLogLevel()))
//			Utils.loguear(ConstantesWarnes.LogLevel.DEBUG, "<< ERROR >> "
//					+ exc.getMessage());
//	}
//
//	pointcut loguearNuevoPedido(Pedido ped) : execution(Pedido.new(..)) && this(ped);
//	after(Pedido ped) returning : loguearNuevoPedido(ped) {
//		Utils.loguear("Se ha CREADO un nuevo PEDIDO con "
//				+ ped.getPiezas().size() + " piezas.");
//		Utils.logEnArchivo("Se ha CREADO un nuevo PEDIDO con "
//				+ ped.getPiezas().size() + " piezas.", ped.getId());
//	}
//
//	pointcut loguearCancelacionPedido() : execution(* Pedido.cancelar(..)) ;
//	before() : loguearCancelacionPedido() {
//		Utils.loguear("Se ha CANCELADO un PEDIDO que tenia "
//				+ ((Pedido) thisJoinPoint.getTarget()).getPiezas().size()
//				+ " piezas.");
//		Utils.logEnArchivo("Se ha CANCELADO un PEDIDO que tenia "
//				+ ((Pedido) thisJoinPoint.getTarget()).getPiezas().size()
//				+ " piezas.", ((Pedido) thisJoinPoint.getTarget()).getId());
//	}
//
//	pointcut loguearEfectivizacionPedido() : execution(* Pedido.efectivizar());
//	after() returning : loguearEfectivizacionPedido() {
//		Utils.loguear("Se ha EFECTIVIZADO un PEDIDO que tenia "
//				+ ((Pedido) thisJoinPoint.getTarget()).getPiezas().size()
//				+ " piezas.");
//		Utils.logEnArchivo("Se ha EFECTIVIZADO un PEDIDO que tenia "
//				+ ((Pedido) thisJoinPoint.getTarget()).getPiezas().size()
//				+ " piezas.", ((Pedido) thisJoinPoint.getTarget()).getId());
//	}
//
//	pointcut loguearAgregarPiezaAPedido(Pieza pieza) : execution(* Pedido.agregarPieza(..)) && args(pieza);
//	after(Pieza pieza) returning : loguearAgregarPiezaAPedido(pieza) {
//		Utils.loguear("La PIEZA " + pieza.getDescripcion()
//				+ " se agrego al PEDIDO.");
//	}
//}
